package pe.edu.unmsm.ocaa.workspace.integracion.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;

import pe.edu.unmsm.ocaa.workspace.integracion.dao.ArchivoDAO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.ArchivoDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.BDArchivoDTO;

@Repository
public class ArchivoDAOImpl extends SqlMapClientDaoSupport implements ArchivoDAO {

	@Autowired
	public ArchivoDAOImpl(SqlMapClient sql) {
		super.setSqlMapClient(sql);
		
	}

	@Override
	public List<ArchivoDTO> cargarCarpetas(Integer idUsuario)
			throws DataAccessException {
		Map map=new HashMap();
		map.put("idUsuario", idUsuario);
		return (List<ArchivoDTO>)getSqlMapClientTemplate().queryForList("Archivo.selectCarpetas", map);
	}

	@Override
	public void insertArchivo(ArchivoDTO archivo)
			throws DataAccessException {
		getSqlMapClientTemplate().insert("Archivo.insertArchivo", archivo);
	}

	@Override
	public void updateArchivo(ArchivoDTO archivoEditar)
			throws DataAccessException {
		getSqlMapClientTemplate().update("Archivo.updateArchivo", archivoEditar);
	}

	@Override
	public List<BDArchivoDTO> listArchivosxCarpetas(Integer idArchivo, Integer idUsuario)
			throws DataAccessException {
		Map map=new HashMap();
		map.put("idArchivoPadre", idArchivo);
		map.put("idUsuario", idUsuario);
		return (List<BDArchivoDTO>)getSqlMapClientTemplate().queryForList("Archivo.selectArchivosxCarpeta", map);
	}

	@Override
	public List<ArchivoDTO> selectArchivoEnCarpeta(String nombreArchivo,
			Integer idCarpeta) throws DataAccessException {
		Map map=new HashMap();
		map.put("nombreArchivo", nombreArchivo);
		map.put("idCarpeta", idCarpeta);
		return (List<ArchivoDTO>)getSqlMapClientTemplate().queryForList("Archivo.selectArchivoEnCarpeta", map);
	}

	@Override
	public Integer selectSgteidArchivo() throws DataAccessException {
		return (Integer)getSqlMapClientTemplate().queryForObject("Archivo.selectSgteIdArchivo");
	}

	@Override
	public ArchivoDTO obtenerUltimaCarpeta() throws DataAccessException {
		return (ArchivoDTO)getSqlMapClientTemplate().queryForObject("Archivo.selectMaxCarpeta");
	}

	@Override
	public Integer selectCountArchivo(Integer idArchivo)
			throws DataAccessException {
		return (Integer)getSqlMapClientTemplate().queryForObject("Archivo.selectCountArchivo", idArchivo);
	}

	@Override
	public void deleteArchivo(Integer idArchivo) throws DataAccessException {
		getSqlMapClientTemplate().delete("Archivo.deleteArchivo", idArchivo);
	}

	@Override
	public ArchivoDTO selectArchivo(Integer idArchivo)
			throws DataAccessException {
		return (ArchivoDTO)getSqlMapClientTemplate().queryForObject("Archivo.selectArchivo", idArchivo);
	}
	
	@Override
	public void insertPermisoCarpeta(Map map) throws DataAccessException {
		getSqlMapClientTemplate().insert("Archivo.insertPermiso", map);
	}

	@Override
	public void deletePermisosxArchivo(Integer idArchivo)
			throws DataAccessException {
		getSqlMapClientTemplate().delete("Archivo.deletePermisosxidArchivo", idArchivo);
	}

	@Override
	public void deleteGrupoxArchivo(Integer idGrupo, Integer idArchivo)
			throws DataAccessException {
		Map map=new HashMap();
		map.put("idGrupo", idGrupo);
		map.put("idArchivo", idArchivo);
		getSqlMapClientTemplate().delete("Archivo.deleteGrupoxArchivo", map);
	}

}
